'''
给你一个整数数组 nums ，数组中的元素 互不相同 。返回该数组所有可能的
子集
（幂集）。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
'''

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        from typing import List
        res = []
        track = []

        def backtrack(nums,start):
            res.append(list(track))

            for i in range(start,len(nums)):
                track.append(nums[i])

                backtrack(nums,i + 1)

                track.pop()
        
        backtrack(nums,0)
        return res